import os
import time
import shutil
import pinyin

# 文件加名称改成拼音的脚本
StartTime = time.time()


# 需要处理目录的绝对路径
FileRoot = r'/syncMac/1'

def Main():
    # 先修改文件名
    for parent, dirnames, filenames in os.walk(FileRoot):
        for filename in filenames:
            srcFile = os.path.join(parent, filename)
            dstFile = os.path.join(parent, pinyin.get(filename, format='strip'))
            if srcFile == dstFile:   # 如果文件名本身就是全小写
                continue
            print('%s -> %s' % (srcFile, dstFile))
            shutil.copyfile(srcFile, dstFile)   # 目标文件会被覆盖

    # 后修改目录名，这里注意topdown参数。
    # topdown决定遍历的顺序，
    # 如果topdown为True，则先列举top下的目录，然后是目录的目录，依次类推；
    # 反之，则先递归列举出最深层的子目录，然后是其兄弟目录，然后父目录。
    # 我们需要先修改深层的子目录
    for parent, dirnames, filenames in os.walk(FileRoot, topdown=False):
        for dirname in dirnames:
            srcDir = os.path.join(parent, dirname)
            dstDir = os.path.join(parent, pinyin.get(dirname, format='strip'))
            if srcDir == dstDir: 	# 如果文件夹名本身就是全小写
                continue
            print('%s -> %s' % (srcDir, dstDir))
            if not os.path.exists(dstDir):  # 目标目录不存在，直接改名
                os.rename(srcDir, dstDir)
            else:
                # 目标目录不存在，先拷贝创建硬链接，再删除源文件
                # -f, --force
                # -r, --recursive
                # -l, --link, hard link files instead of copying
                cmd = r'cp -frl %s/* %s' % (srcDir, dstDir)
                print('cmd: %s' % cmd)
                os.system(cmd)
                cmd = r'rm -rf %s' % srcDir
                print('cmd: %s' % cmd)
                os.system(cmd)

if __name__ == '__main__':
    Main()
    print('Time total: %.2fs' % (time.time() - StartTime))
    print('Current time: %s' % time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())))
